// 作业一

// 1. 斐波那契数列
// 0、1、1、2、3、5、8、13、21、34、……依次类推下去，
// 你会发现，它的后一个数等于前面两个数的和。请问使用递归函数实现数列。

function sum1(n){
    if(n==1){
        return 0;
    }
     if(n==2||n==3){
        return 1;
    }
    return sum1(n-2)+sum1(n-1)
}
console.log(sum1(1));//0
console.log(sum1(6));//8
console.log(sum1(8));//13

// 作业二

let arr={
    name:"xzxzz",
    age:18,
    dog:{
        pname:"A",
        age:3
    }
}
let checkType=data=>{
    return Object.prototype.toString.call(data).slice(8,-1)
}
let deepClone=name=>{
    let res1; //存储拷贝结果
    let tap=checkType(name); //调用检测类型函数获取tap的类型
    // 判断tap类型是否为引用类型
    if(tap==="Array"){
        res1=[];//数组类型
    }else if(tap==="Object"){
        res1={};//对象类型
    }else{
        return name; //都不是则返回本身
    }
    // 遍历内容 name
    for(let index in name){
        let value=name[index];//获取遍历的值
        let valueType=checkType(value);//调用检测类型函数获取value类型
        if(valueType==="Array"||valueType==="Object"){
            res1[index]=deepClone(value);//如果是引用类型，则递归调用，并将结果赋值给re是[index]
        }else{
            res1[index]=value;//如果不是引用类型，自身
        }
    }
    return res1
}
let res1=deepClone(arr)
console.log(res1);